package com.pe.basic.controller;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

import org.apache.log4j.Logger;

import com.pe.basic.domain.ParamEsce;
import com.pe.basic.domain.ValorPeriodo;
import com.pe.basic.domain.VarSensiblidad;

@RequestScoped
@ManagedBean
public class ProcesoController {

	private static final Logger log = Logger.getLogger(ProcesoController.class);
	
	private boolean columna1;
	private boolean columna2;
	private boolean columna3;
	
	private String tipoVariableSelected;
	
	private List<SelectItem> lstTipoVarSen;
	List<VarSensiblidad> lstTipoSen;

	private List<ParamEsce> lstParamEsce;
	
	private List<SelectItem> lstTipo2;
	
	private List<ParamEsce> lst2;
	
	public ProcesoController() {
		this.ocultarColumnas(3);
		cargarLista();
	}
	
	public void cargarLista() {
		lstParamEsce = new ArrayList<ParamEsce>();
		lstTipoVarSen = new ArrayList<SelectItem>();
//		lstTipoSen = new ArrayList<VarSensiblidad>();
		
		ParamEsce paramEsce = new ParamEsce();
		ValorPeriodo valorPeriodo = new ValorPeriodo();
		valorPeriodo.setCdParamGeneral(1L);
		valorPeriodo.setImValor(new BigDecimal(10));
		valorPeriodo.setNuPeriodo(3L);
		valorPeriodo.setTpEscenario(4L);
		
		ValorPeriodo valorPeriodo2 = new ValorPeriodo();
		valorPeriodo2.setCdParamGeneral(2L);
		valorPeriodo2.setImValor(new BigDecimal(11));
		valorPeriodo2.setNuPeriodo(4L);
		valorPeriodo2.setTpEscenario(5L);
		
		ValorPeriodo valorPeriodo3 = new ValorPeriodo();
		valorPeriodo3.setCdParamGeneral(3L);
		valorPeriodo3.setImValor(new BigDecimal(12));
		valorPeriodo3.setNuPeriodo(5L);
		valorPeriodo3.setTpEscenario(6L);
		
		
		paramEsce.setNombrePeriodo("Pesimista %");
		paramEsce.setValorP1(valorPeriodo);
		paramEsce.setValorP2(valorPeriodo2);
		paramEsce.setValorP3(valorPeriodo3);
		
		ParamEsce paramEsce2 = new ParamEsce();
		paramEsce2.setNombrePeriodo("Conservador %");
		paramEsce2.setValorP1(valorPeriodo);
		paramEsce2.setValorP2(valorPeriodo2);
		paramEsce2.setValorP3(valorPeriodo3);
		
		lstParamEsce.add(paramEsce);
		lstParamEsce.add(paramEsce2);
		
		//Here
		try {
			lstTipoVarSen = getListSelectItem("4");
		} catch (Exception e) {
			e.printStackTrace();
			log.error("Mensaje de Error: " + e.getMessage());
		}
		
	}
	
	/**
	 * 
	 * @param limite Se ingresa el numero de columnas a mostrar
	 */
	public void ocultarColumnas(int limite){
		for (int i = 1; i <= limite; i++) {
			switch(i){
				case 1: this.setColumna1(true);	break;
				case 2: this.setColumna2(true);	break;
				case 3: this.setColumna3(true);	break;				
			}
		}
	}

	
	private List<SelectItem> getListSelectItem(String codigo) throws Exception{
//	private List<VarSensiblidad> getListSelectItem(String codigo) throws Exception{
		List<SelectItem> listSelectItem = new ArrayList<SelectItem>();
		List<VarSensiblidad> list = new ArrayList<VarSensiblidad>();
		VarSensiblidad var = new VarSensiblidad();
		var.setCodigo("01");
		var.setDescripcion("Crecimiento proyetado de ventas");
		
		VarSensiblidad var2 = new VarSensiblidad();
		var2.setCodigo("02");
		var2.setDescripcion("Costos de Ventas (Sin depreciacion)");
		
		VarSensiblidad variable = new VarSensiblidad();
		variable.setCodigo("01");
		variable.setDescripcion("Crecimiento proyectado de Ventas");
		
		VarSensiblidad variable2 = new VarSensiblidad();
		variable2.setCodigo("02");
		variable2.setDescripcion("Costos de Ventas (Sin depreciacion)");
		
		VarSensiblidad variable3 = new VarSensiblidad();
		variable3.setCodigo("03");
		variable3.setDescripcion("Gastos de Ventas");
		
		list.add(variable);
		list.add(variable2);
		list.add(variable3);
		
		if(list != null && list.size() > 0){
			for (VarSensiblidad sensibilidad : list) {
				listSelectItem.add(new SelectItem(sensibilidad, sensibilidad.getDescripcion()));
			}
		}

		return listSelectItem;
//		return list;
	}
	
	//Getters and Setters
	public List<ParamEsce> getLstParamEsce() {
		return lstParamEsce;
	}

	public void setLstParamEsce(List<ParamEsce> lstParamEsce) {
		this.lstParamEsce = lstParamEsce;
	}
	
	public boolean isColumna1() {
		return columna1;
	}

	public void setColumna1(boolean columna1) {
		this.columna1 = columna1;
	}

	public boolean isColumna2() {
		return columna2;
	}

	public void setColumna2(boolean columna2) {
		this.columna2 = columna2;
	}

	public boolean isColumna3() {
		return columna3;
	}

	public void setColumna3(boolean columna3) {
		this.columna3 = columna3;
	}

	public String getTipoVariableSelected() {
		return tipoVariableSelected;
	}

	public void setTipoVariableSelected(String tipoVariableSelected) {
		this.tipoVariableSelected = tipoVariableSelected;
	}

	public List<SelectItem> getLstTipoVarSen() {
		return lstTipoVarSen;
	}

	public void setLstTipoVarSen(List<SelectItem> lstTipoVarSen) {
		this.lstTipoVarSen = lstTipoVarSen;
	}

	public List<VarSensiblidad> getLstTipoSen() {
		return lstTipoSen;
	}

	public void setLstTipoSen(List<VarSensiblidad> lstTipoSen) {
		this.lstTipoSen = lstTipoSen;
	}
	
}
